package com.echo.im.domain.user.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.echo.im.domain.user.vo.LoginVO;
import com.echo.im.domain.user.dto.LoginDTO;
import com.echo.im.domain.user.dto.ModifyPwdDTO;
import com.echo.im.domain.user.dto.RefreshTokenDTO;
import com.echo.im.domain.user.dto.RegisterDTO;
import com.echo.im.repository.dao.entity.User;

/**
 * 用户服务接口，提供了用户相关的操作，如登录、修改密码、注册等。
 * 继承了IService<User>接口，实现了用户数据的增删改查操作。
 *
 * @author echo
 * @date 2024-08-16
 */
public interface UserService extends IService<User> {
    /**
     * 用户登录方法。
     *
     * @param dto 登录数据传输对象，包含用户登录所需的信息。
     * @return 登录成功后返回一个LoginVO对象，包含用户信息和令牌等。
     */
    LoginVO login(LoginDTO dto);

    /**
     * 修改用户密码方法。
     *
     * @param dto 包含用户信息和新旧密码的信息对象。
     */
    void modifyPassword(ModifyPwdDTO dto);

    /**
     * 用户注册方法。
     *
     * @param dto 注册数据传输对象，包含用户注册所需的信息。
     */
    void register(RegisterDTO dto);

    /**
     * 刷新令牌方法，用于在令牌过期前刷新获取新的令牌。
     *
     * @return 刷新成功后返回一个新的LoginVO对象，包含新的令牌和用户信息。
     */
    LoginVO refreshToken(RefreshTokenDTO dto);

    /**
     * 用户登出方法。
     */
    void logout();
}
